home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / NMK / Recorders / ScrollerCover.m < prev    next >
Text File  |  1995-06-12  |  2KB  |  92 lines

  1. /***** ScrollerCover.m -- ScrollerCover object implementation
  2.     NeXTstep Measurement Kit
  3.     by Alex Meyer <ameyer@phoenix.Princeton.EDU>
  4.     for computer science senior thesis
  5.     24 April 1992 -- created from old RScroller.m
  6. *****/
  7.  
  8. #import <sys/time.h>
  9. #import <appkit/Application.h>
  10. #import "RScrollerVars.h"
  11. #import "ScrollerCover.h"
  12.  
  13. #define VARSNAME ("ScrollerVars")
  14.  
  15. #define MICRO (1000000.0)
  16. #define DOUBLETIME(stv) ((double) (((unsigned long) (stv).tv_sec) \
  17.     + (((unsigned long) (stv).tv_usec) / MICRO)))
  18.  
  19. @implementation ScrollerCover
  20.  
  21. - makeVars
  22. {
  23.     id vars;
  24.     const char *nm;
  25.  
  26.     if (sFlags.isHoriz)    /* cheesey cop-out for names */
  27.         nm = "horiz";
  28.     else
  29.         nm = "vert";
  30.     vars = [RScrollerVars alloc];
  31.     [vars initString:nm
  32.         tag:tag
  33.         rect:&frame];
  34.     NXNameObject(VARSNAME,vars,self);
  35.     return (vars);
  36. }
  37.  
  38.  
  39. - mouseDown:(NXEvent *)theEvent
  40. {
  41.     id vars;
  42.     int index;
  43.     double time0,time1;
  44.     struct timeval start,finish;
  45.     struct timezone zone;
  46.  
  47.     gettimeofday(&start,&zone);
  48.     [super mouseDown:theEvent];
  49.     gettimeofday(&finish,&zone);
  50.     time0 = DOUBLETIME(start);
  51.     time1 = DOUBLETIME(finish);
  52.     vars = NXGetNamedObject(VARSNAME,self);
  53.     if (!(vars))
  54.         vars = [self makeVars];
  55.     [vars incHits];
  56.     switch (hitPart) {
  57.         case (NX_KNOB):
  58.             [vars incKNOB];
  59.             break;
  60.         case (NX_DECPAGE):
  61.             [vars incDECPAGE];
  62.             break;
  63.         case (NX_INCPAGE):
  64.             [vars incINCPAGE];
  65.             break;
  66.         case (NX_DECLINE):
  67.             [vars incDECLINE];
  68.             break;
  69.         case (NX_INCLINE):
  70.             [vars incINCLINE];
  71.             break;
  72.         case (NX_KNOBSLOT):
  73.             [vars incKNOBSLOT];
  74.             break;
  75.         default:
  76.             break;
  77.     }
  78.     [vars timeFrom:time0
  79.         to:time1];
  80.     index = curValue * SCROLLERHIST;
  81.     if (index >= SCROLLERHIST)
  82.         index = SCROLLERHIST - 1;
  83.     [vars incHist:index];
  84.     return (self);
  85. }
  86.  
  87. @end
  88.  
  89. #undef DOUBLETIME
  90. #undef MICRO
  91. #undef VARSNAME
  92.